define(function(require, exports) {
	var $ = require('jquery');
	var util = require('util');
	var pubjs = require('pubjs');
	var tip = require('@base/tip');
	var highGrid = require('@base/highGrid');
	var baseGrid = require('@base/grid');
	var dspUtil = require('dspUtil');
	var adx_map = pubjs.config('channelMap');
	var labels = require('@sys_labels');

	// 尺寸情况TIP表格
	var sizeStatusGrid = baseGrid.base.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				url: 'sweety/list',
				auto_load: false,
				reqType: 'websocket',
				cols: [
					{'type': 'id', 'text': LANG('序号')},
					{'name': 'Name','text': LANG('创意包'),'align': 'left','render':'renderName'},
					{'name': 'Sizes','text': LANG('尺寸'),'align': 'left'}
				],
				hasSearch: false,
				hasTab: false,
				hasAmount: false,
				hasExport: false,
				hasRefresh: false,
				hasPager: false,
				list: {
					scroll_type: 'row',
					scroll_size: 8
				}
			})
			this.Super('init', arguments);
		},
		renderName: function( i, val ){
			var text = val || '-';
			var html = $('<div class="text-truncate"/>').text(text);
			// 双击出现复制按钮
			this.uiBind(html, 'dblclick', function(evt, elm){
				pubjs.clipboard(html);
			});
			return html;
		}
	});

	// 审核状况TIP表格
	var verifyGrid = baseGrid.base.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				url: 'creative/auditList',
				auto_load: false,
				reqType: 'websocket',
				cols: [
					{'name': '_id', 'text': LANG('创意ID'),'align': 'center'},
					{'name': 'SweetyName', 'text': LANG('创意包'), 'align': 'center'},
					{'name': 'Name', 'text': LANG('创意'), 'align': 'center'},
					{'name': 'VerifyStatus', 'text': LANG('审核状态'), 'align': 'center', 'render': 'renderVerifyStatus'},
					{'name': 'RejectReason', 'text': LANG('审核原因'), 'align': 'center'}
				],
				hasSearch: false,
				hasTab: false,
				hasAmount: false,
				hasExport: false,
				hasRefresh: false,
				hasPager: false,
				list: {
					scroll_type: 'row',
					scroll_size: 8
				}
			})
			this.$verifyStatusTxt = {
				"0": LANG("待审核"),
				"-2": LANG("审核中"),
				"-1": LANG("未通过"),
				"1": LANG("审核通过")
			}
			this.Super('init', arguments);
		},
		renderVerifyStatus: function( i, val ) {
			return this.$verifyStatusTxt[val] || '-';
		}
	});

	var Base = highGrid.base.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				url: 'diagnosis/list',
				cols: [
					{'type': 'id', 'width': 25 },
					{'name': 'Status', 'text': LANG('状态'), 'render': 'renderStatus', 'align': 'center' },
					{'name': 'Deal', 'text': LANG('订单'), 'type': 'index', 'width': 250, 'render': 'renderSlot' },
					{'name': 'Slot', 'text': LANG('广告位'), 'type': 'index', 'width': 250, 'render': 'renderSlot' },
					{'name': 'Sweety', 'text': LANG('创意包'), 'type': 'index', 'width': 250, 'render': 'renderSweety' },
					{'name': 'Size', 'text': LANG('尺寸'), 'type': 'index', 'width': 250, 'render': 'renderSize' }
				],
				metrics: [
					{'name': 'Request', 'text': LANG('竞价请求数'), 'align': 'right'},
					{'name': 'SlotSize', 'text': LANG('广告位尺寸'), 'type': 'index', 'align': 'center', 'render': 'renderSlotSize' },
					{'name': 'Complete', 'text': LANG('尺寸情况'), 'type': 'index', 'align': 'left', 'render': 'renderSizeStatus' },
					{'name': 'Verify', 'text': LANG('审核情况'), 'type': 'index', 'align': 'left', 'render': 'renderVerifyStatus' },
					{'name': 'AllowMaterialName', 'text': LANG('素材要求'), 'type': 'index', 'align': 'left', 'render': 'renderAllowMaterialNames' }

				],
				reqType: 'websocket',
				hasSearch: false,
				hasTab: false,
				hasAmount: false,
				hasExport: false,
				hasRefresh: false,
				hasSubGrid: false,
				auto_load: false,
				gridName: 'diagnosis'
			});
			// icon
			this.$statusIcon = {
				"1": '<em class="dStatus pass"></em>',
				"2": '<em class="dStatus part"></em>',
				"3": '<em class="dStatus shit"></em>'
			};
			// 文本
			this.$sizeStatusTxt = {
				"1": LANG("齐全"),
				"2": LANG("部分缺少"),
				"3": LANG("没有尺寸")
			}
			// 不再这里的话就是没尺寸了
			this.$verifyStatusTxt = {
				"1": LANG("全部通过"),
				"2": LANG("部分通过"),
				"3": LANG("没有通过")
			}

			this.$tips = {
				'CompleteStatus': {
					"titles": {
						"Size": LANG("以下创意包缺少该尺寸创意"),
						"AdPosition": LANG("以下创意包缺少该广告位的尺寸创意"),
						"Sweety": LANG("缺少以下尺寸"),
						"Deal": LANG("以下创意包缺少该订单的尺寸创意")
					},
					"pos": "mr",
					"width": 420,
					'autoShow': false,
					// 'offsetY': 150,
					'gridMod': sizeStatusGrid,
					'grid': null
				},
				'VerifyStatus': {
					"titles": {
						"Size": LANG("以下创意未通过审核"),
						"AdPosition": LANG("以下创意未通过审核"),
						"Sweety": LANG("以下创意未通过审核"),
						"Deal": LANG("以下创意未通过审核")
					},
					"pos": "ml",
					"width": 720,
					'autoShow': false,
					// 'offsetY': 150,
					'gridMod': verifyGrid,
					'grid': null
				}
			}
			this.Super('init', arguments);
		},
		afterBuild: function() {
			var self = this;
			self.Super('afterBuild', arguments);
			util.each(self.$tips, function( item, idx ) {
				var mod = self.create( idx, tip.base, util.extend({}, item, {
					"data": [
						'<div class ="P-campaignDiagnosisTipTitle pb10" />',
						'<div class="P-campaignDiagnosisTipWrap"/>'
					].join(''),
					'autoHide': 'leave'
				}));

				// 构建tip内容
				mod.setData(mod.getConfig('data'));
				mod.css('display', 'none');
				item.titleEl = mod.find('.P-campaignDiagnosisTipTitle');

				// 创建表格
				item.grid = mod.create('grid' + idx, item.gridMod, {
					target: mod.find('.P-campaignDiagnosisTipWrap'),
					wrapperClass: 'P-campaignDiagnosisTipWrap'
				});
			});
		},
		switchColumn: function( type ) {
			var self = this;
			this.$type = type;
			if (type == 'Size') {
				self.toggleColumn('Size', true);
			} else {
				self.toggleColumn('Size', false);
			}
			// 只有创意包才显示状态
			if (type == 'Sweety') {
				self.toggleColumn('Sweety', true);
				self.toggleColumn('Status', true);
			} else {
				self.toggleColumn('Sweety', false);
				self.toggleColumn('Status', false);
			}
			// 只有广告才显示素菜要求和竞价请求数
			if (type == 'AdPosition') {
				self.toggleColumn('Slot', true);
				self.toggleColumn('SlotSize', true, 'sub');
				self.toggleColumn('AllowMaterialName', true, 'sub');
				self.toggleColumn('Request', true, 'sub');
			} else {
				self.toggleColumn('Slot', false);
				self.toggleColumn('SlotSize', false, 'sub');
				self.toggleColumn('AllowMaterialName', false, 'sub');
				self.toggleColumn('Request', false, 'sub');
			}
			if(type == 'Deal')
			{
				self.toggleColumn('Deal', true);
			}
			else
			{
				self.toggleColumn('Deal', false);
			}
		},
		renderSlot: function(index, val, rowData, col, con) {
			return this.renderName( null, rowData['Name'], null, col, con );
		},
		renderSweety: function(index, val, rowData, col, con) {
			return this.renderName( null, rowData['Name'], null, col, con );
		},
		renderSize: function(index, val, rowData, col, con) {
			return this.renderName( null, rowData['Name'], null, col, con );
		},
		renderName: function(index, val, rowData, col, con) {
			return $('<div class="uk-text-truncate" />').append(val).width(col.width - 5).attr('title', val);
		},
		// 广告位尺寸
		renderSlotSize: function(index, val, rowData, col, con){
			var size = +rowData.Size;
			return size ? Math.floor(size/10000) + '*' + (size % 10000) : '-';
		},
		// 状态
		renderStatus: function(i, val, data, con) {
			var text = (+data.Status == 1) ? LANG('已开启') : LANG('已暂停');
			var className = (+data.Status == 1) ? 'running' : 'pause';
			return '<i class="' + className + '" title="' + text + '" />';
		},
		// 尺寸情况
		renderSizeStatus: function(index, val, rowData) {
			var html = $([
				'<div data-type="Complete" data-id="' + rowData.Id + '" data-status="'+ val + '">',
					( this.$statusIcon[val] || "" ),
					'<span>',
					( this.$sizeStatusTxt[val] || "-" ),
					'</span>',
				'</div>'
			].join(''));
			this.uiBind(html.children(), 'mouseenter mouseleave', this.eventSizeStatusHandler);
			return html;
		},
		// 审核情况
		renderVerifyStatus: function(index, val, rowData) {
			var html = $([
				'<div data-type="Verify" data-id="' + rowData.Id + '" data-status="' + val + '">',
					(this.$verifyStatusTxt[val] && (this.$statusIcon[val] + '<span>' +this.$verifyStatusTxt[val])+'</span>' || "-"),
				'</div>'
			].join(''));
			this.uiBind(html.children(), 'mouseenter mouseleave', this.eventVerifyStatusHandler);
			return html;
		},
		renderAllowMaterialNames: function(i, val, row, con) {
			return "" + (val || '');
		},
		// 显示隐藏尺寸情况
		eventSizeStatusHandler: function(ev, elm) {
			var $elm = $(elm);
			var tag = $elm.parent();
			var id = tag.attr("data-id"); // 尺寸ID
			var type = tag.attr("data-type"); // Complete, Verify
			var status = tag.attr("data-status");
			var data = this.getData(); // 表格数据
			var items = formatData(data.items);
			var queryType = this.$type;
			if (status != 2 && status != 3) {
				return false;
			}
			var name = type + 'Status';
			var tip = this.get(name);
			var tipMod = this.$tips[name];
			// 鼠标移入
			if (ev.type === 'mouseenter') {
				var nowData = util.find(items, '' + id, 'Id');
				var unCompletes = nowData['UnComplete']; // 不全的创意ID
				if (!tipMod) {
					return pubjs.error(LANG('未知的Status: ' + type));
				}

				tipMod.titleEl.text(tipMod.titles[queryType]);
				tip.update({
					anchor: $elm
				}).show();
				// 创意包数据直接设置
				if( queryType === 'Sweety' ) {
					tipMod.grid.setData( _formatSweetySize( unCompletes ) );
					tipMod.grid.toggleColumn('Name', false);
					tipMod.grid.toggleColumn('Sizes', true);
				}
				// 广告位和广告需要load数据
				else {
					tipMod.grid.setParam({
						'ids': unCompletes.join(','),
						'mongoField': ['Name']
					}).load();
					tipMod.grid.toggleColumn('Name', true);
					tipMod.grid.toggleColumn('Sizes', false);
				}
			}
			return false;
		},
		// 显示隐藏审核情况
		eventVerifyStatusHandler: function(ev, elm) {
			var $elm = $(elm);
			var tag = $elm.parent();
			var id = tag.attr("data-id"); // 尺寸ID
			var type = tag.attr("data-type"); // Complete, Verify
			var status = tag.attr("data-status");
			var data = this.getData(); // 表格数据
			var items = formatData(data.items);
			var queryType = this.$type;

			if (status != 2 && status != 3) {
				return false;
			}

			var name = type + 'Status';
			var tip = this.get(name);
			var tipMod = this.$tips[name];
			// 鼠标移入
			if (ev.type === 'mouseenter') {
				var nowData = util.find(items, '' + id, 'Id');
				var unAllows = nowData['UnAllow'];
				if (!tipMod) {
					return pubjs.error(LANG('未知的Status: ' + type));
				}
				tipMod.titleEl.text(tipMod.titles[queryType]);
				tip.update({
					anchor: $elm
				}).show();
				tipMod.grid.setParam({
					'ids': unAllows,
					'campaignId': this.$campaignId
				}).load();
			}
			return false;
		},
		setCampaignId: function( id ) {
			this.$campaignId = id || 0;
		}
	})
	exports.base = Base;
	// 审核状况TIP表格

	var Dia_Status = {
		PASS: 0
		,PART: 1
		,FAIL: 2
	};

	var module_map = {
		'schedule':
		{
			'name': LANG('排期'),
			'content': LANG('当前时间是否满足活动投放日期、日程')
		},
		'budget':
		{
			'name': LANG('预算'),
			'content': LANG('活动当天消费/总消费、账号当天消费是否达到预算设置')
		},
		'qualification':
		{
			'name': LANG('资质'),
			'content': LANG('广告主资质是否通过')
		},
		'creative':
		{
			'name': LANG('创意'),
			'content': LANG('创意尺寸、审核结果以及各种渠道特有的创意限制条件等进行过滤')
		},
		'campaign_set':
		{
			'name': LANG('活动设置'),
			'content': LANG('活动定向设置')
		},
		'other':
		{
			'name': LANG('其它'),
			'content': LANG('出价过低，内部竞价失败等因素过滤')
		}
	};

	var sub_module_map = {
		'schedule_time':
		{
			'name': LANG('活动日期设置'),
			'advice': LANG('请修改活动投放日期')
		},
		'schedule_timeSet':
		{
			'name': LANG('活动日程设置'),
			'advice': LANG('请修改活动日程设置')
		},
		'campaign_daily':
		{
			'name': LANG('活动每日预算'),
			'advice': LANG('提高活动每日预算')
		},
		'campaign_total':
		{
			'name': LANG('活动总预算'),
			'advice': LANG('提高活动总预算')
		},
		'user_daily':
		{
			'name': LANG('账号每日预算'),
			'advice': LANG('提高账号每日预算')
		},
		'aptitude_connect':
		{
			'name': LANG('资质是否关联'),
			'advice': LANG('请将资质与账号关联')
		},
		'aptitude_send':
		{
			'name': LANG('资质是否送审'),
			'advice': LANG('请联系管理员，将资质送审')
		},
		'aptitude_audit':
		{
			'name': LANG('资质是否通过'),
			'advice': LANG('请按渠道要求提交资质文件')
		},
		'deal':
		{
			'name': LANG('订单'),
			'advice': LANG('全部过虑时，请联系媒介人员')
		},
		'people_tag':
		{
			'name': LANG('人群标签Tag'),
			'advice': LANG('请更改活动人群标签tag设置')
		},
		'quality':
		{
			'name': LANG('流量质量'),
			'advice': LANG('过滤较多时，请更改投放媒体')
		},
		'industry':
		{
			'name': LANG('广告主行业分类过滤'),
			'advice': LANG('请更改活动的行业分类')
		},
		'ip':
		{
			'name': LANG('IP定向'),
			'advice': LANG('请更改活动ip定向设置')
		},
		'apiLevel':
		{
			'name': LANG('空气指数设置'),
			'advice': LANG('过滤较多时，请修改活动空气指数定向')
		},
		'temperature':
		{
			'name': LANG('温度定向设置'),
			'advice': LANG('过滤较多时，请修改活动温度定向')
		},
		'temperatureDiff':
		{
			'name': LANG('温差定向'),
			'advice': LANG('过滤较多时，请修改活动温差定向')
		},
		'baiduHotWord':
		{
			'name': LANG('百度指数定向'),
			'advice': LANG('过滤较多时，请修改活动百度指数定向')
		},
		'zone':
		{
			'name': LANG('地区定向'),
			'advice': LANG('过滤较多时，请修改活动地区定向')
		},
		'os':
		{
			'name': LANG('操作系统'),
			'advice': LANG('过滤较多时，请修改活动操作系统定向')
		},
		'lbs':
		{
			'name': LANG('LBS定向'),
			'advice': LANG('过滤较多时，请修改活动LBS定向范围')
		},
		'brandProtect':
		{
			'name': LANG('品牌保护'),
			'advice': LANG('请修改活动品牌保护设置，或联系管理员')
		},
		'deviceType':
		{
			'name': LANG('设备定向'),
			'advice': LANG('请修改设备品牌、型号、网络、类型等设置')
		},
		'landType':
		{
			'name': LANG('落地页类型'),
			'advice': LANG('请修改活动落地页类型活动落地页链接')
		},
		'browser':
		{
			'name': LANG('浏览器'),
			'advice': LANG('请修改活动客户端定向中浏览器设置')
		},
		'scene':
		{
			'name': LANG('场景'),
			'advice': LANG('请修改活动中场景定向')
		},
		'targetPage':
		{
			'name': LANG('终端网页'),
			'advice': LANG('请修改终端网页')
		},
		'whiteBlack':
		{
			'name': LANG('黑白名单定向'),
			'advice': LANG('请修改活动黑白名单')
		},
		'videoDirect':
		{
			'name': LANG('视频定向'),
			'advice': LANG('请修改活动视频定向')
		},
		'pageKeyword':
		{
			'name': LANG('页面关键词定向'),
			'advice': LANG('请修改活动页面关键词定向')
		},
		'character':
		{
			'name': LANG('重定向人群过滤'),
			'advice': LANG('请修改活动重定向或其它人群')
		},
		'selfPeople':
		{
			'name': LANG('自有人群设置'),
			'advice': LANG('请修改活动自有人群设置')
		},
		'biPeople':
		{
			'name': LANG('浏览兴趣人群'),
			'advice': LANG('请修改浏览兴趣人群')
		},
/*		'otherPeople':
		{
			'name': LANG('其他人群'),
			'advice': LANG('请修改其他人群设置')
		},*/
		'thirdPeople':
		{
			'name': LANG('三方人群设置'),
			'advice': LANG('请修改活动三方人群设置')
		},
		'mzPeople': {
			'name': LANG('秒针人群'),
			'advice': LANG('请修改秒针人群')
		},
		'frequency_campaign':
		{
			'name': LANG('活动频次过滤'),
			'advice': LANG('请增加活动频次上限')
		},
		'frequency_sweety':
		{
			'name': LANG('创意包频次过滤'),
			'advice': LANG('请增加创意包频次上限')
		},
		'antiFraud':
		{
			'name': LANG('广告反作弊过滤'),
			'advice': LANG('请修改活空气指数定向')
		},
		'governorStatus':
		{
			'name': LANG('活动投放速度'),
			'advice': LANG('请修改活动投放速度')
		}
	};

	var oneKeyBase = highGrid.base.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				reqType: 'websocket',
				cols: [
				],
				hasSearch: false,
				hasTab: false,
				hasAmount: false,
				hasExport: false,
				hasPager: false,
				hasMenu: true,
				hasBatch: false,
				hasSelect: false,
				hasAutoRefresh: false,
				eventDataLoad: true, // 加载完数据后发消息
				hasRefresh: true,
				hasFilter: false,
				hasFilterResult: false,
				auto_load: false,
				key: 'module'
			});

			this.Super('init', arguments);
		},
		renderResult: function(i, val)
		{
			var icon = '';
			var status = '';
			switch (val)
			{
				case Dia_Status.PASS:
					icon = 'icon-checkbox-in font-success';
					status = LANG('通过');
					break;
				case Dia_Status.PART:
					icon = 'icon-circle font-warning';
					status = LANG('部分通过');
					break;
				case Dia_Status.FAIL:
					icon = 'icon-close font-danger';
					status = LANG('不通过');
					break;
				default :
					var text = '-';
					break;
			}

			return $(`
				<div class="P-DiagnosisOneKeyStatus">
					${text || ''}
					<i title="${status} " class="${icon} status"></i>
				</div>
			`);
		},
		renderModule: function(i, val)
		{
			if(module_map[val])
			{
				return module_map[val]['name'];
			}
		},
		renderContent: function(i, val)
		{
			if(module_map[val])
			{
				return module_map[val]['content'];
			}
		},
	});

	exports.oneKey = oneKeyBase.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				url: 'diagnosis/oneKey',
				reqType: 'websocket',
				cols: [
					{'type': 'id', width: 50},
					{'name': 'module', 'text': LANG('模块'),'align': 'center', render: 'renderModule', width: 50},
					{'name': 'module', 'text': LANG('诊断内容'), 'align': 'left', render: 'renderContent', width: 400},
					{'name': 'result', 'text': LANG('诊断结果'), 'align': 'center', render: 'renderResult', width: 50},
					{'name': 'pass', 'text': LANG('通过数'), 'align': 'center', width: 50 , format: 'numberFormat'},
					{'name': 'filter', 'text': LANG('流量过滤'), 'align': 'center', width: 50, format: 'numberFormat'},
					{'name': 'passRate', 'text': LANG('流量通过率'), 'align': 'center', format: 'formatRateKeep2', width: 50}
				]
			});

			this.Super('init', arguments);
		}
	});


	exports.info = oneKeyBase.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				'url': 'diagnosis/oneKeyInfo',
				'reqType': 'websocket',
				'cols': [
					{'type': 'id', width: 50},
					{'name': 'module', 'text': LANG('模块'),'align': 'center', render: 'renderModule', width: 50},
					{'name': 'subModule', 'text': LANG('诊断内容'), 'align': 'left', render: 'renderSubModule', width: 150},
					{'name': 'result', 'text': LANG('诊断结果'), 'align': 'center', render: 'renderResult', width: 50},
					{'name': 'pass', 'text': LANG('通过数'), 'align': 'center', width: 50 , format: 'numberFormat'},
					{'name': 'filter', 'text': LANG('流量过滤'), 'align': 'center', width: 50, format: 'numberFormat'},
					{'name': 'passRate', 'text': LANG('流量通过率'), 'align': 'center', format: 'formatRateKeep2', width: 50},
					{'name': 'detail', 'text': LANG('详情'), render: 'renderDetail', width: 280, align: 'left'},
					{'name': 'subModule', 'text': LANG('建议'), 'align': 'left', render: 'renderAdvice', width: 150}
				],
				'hasMenu': false,
				'key': 'subModule'
			});

			this.Super('init', arguments);
		}
		,renderDetail: function(i, val, data)
		{
			var html = $('<div></div>');
			if(detail_render.hasOwnProperty(data.subModule))
			{
				detail_render[data.subModule](data.value, html, data);
			}

			return html;
		}
		,renderSubModule: function(i, val)
		{
			return sub_module_map[val] && sub_module_map[val]['name'] || LANG('未知');
		}
		,renderAdvice: function(i, val, data)
		{
			if(data && data.passRate < 0.5 && (!data.hasOwnProperty('filter') || data.filter > 0))
			{
				var text = sub_module_map[val] && sub_module_map[val]['advice'] || LANG('未知');
				return $('<div class="text-truncate"/>').text(text).attr('title', text);
			}

			return '-';
		}
	});

	var detail_render = {
		'schedule_time': function(value, html)
		{
			var begin = LANG('未知');
			var end = LANG('不限');
			if(value.StartTime)
			{
				begin = dspUtil.format_date(value.StartTime)
			}
			if(value.EndTime)
			{
				end = dspUtil.format_date(value.EndTime)
			}

			html.append(`<label>${begin} 至 ${end}</label>`)
		},
		'schedule_timeSet': function(value, html)
		{
			var time = value;
			if(time.Type === 1)
			{
				html.append(`<label>${LANG('不限')}</label>`)
			}
			else if(time.DayHour)
			{
				var hour = time.DayHour || {};
				var div = '<div class="P-DiagnosisOneKeyTimeSet">';
				for(var day in hour)
				{
					if(hour.hasOwnProperty(day))
					{
						var content = LANG('不投');
						if(hour[day] && hour[day].length)
						{
							content = dspUtil.formatScheduleDay(hour[day]);
						}

						div += `<div class="box">
								<div class="name">${dspUtil.format_week(day)}</div>
								<div class="hour" class="text-truncate">${content}</div>
							</div>
							`;
					}
				}

				div += '</div>';
				html.append(div);
			}
		},
		'campaign_daily': function(value, html)
		{
			html.append(detail_render['_budget'](
				value.cost, value.budget, LANG('活动今日总消费'), LANG('活动每日预算')
			));
		},
		'campaign_total': function(value, html)
		{
			html.append(detail_render['_budget'](
				value.cost, value.budget, LANG('活动总消费'), LANG('活动总预算')
			));
		},
		'user_daily': function(value, html)
		{
			html.append(detail_render['_budget'](
				value.cost, value.budget, LANG('账号今日总消费'), LANG('账号每日预算')
			));
		},
		'_budget': function(cost, budget, text_cost, text_budget)
		{
			cost = labels.format.formatCurrencyKeep2(cost);
			budget = budget ? (labels.format.formatCurrencyKeep2(budget)) : LANG('不限');
			return `<div>
						${text_cost}: ${cost}
					</div>
					<div>
						${text_budget}: ${budget}
					</div>`;
		},
		'aptitude_connect': function(value, html)
		{
			html.append(`<div>${value.name}</div><div>${adx_map[value.AdxId]}</div>`);
		},
		'aptitude_send': function(value, html)
		{
			detail_render['aptitude_connect'](value, html);
		},
		'aptitude_audit': function(value, html)
		{
			var str;
			switch(value.Status){
				case 2 :
					str = '<div title="'+LANG("部分通过")+'"class="icon done">' +LANG("部分通过")+ '</div>';
					break;
				case 1 :
					str = '<div title="'+LANG("通过")+'" class="icon done">' +LANG("通过")+ '</div>';
					break;
				case 0 :
					str = '<div title="'+LANG("待审核")+'" class="icon wait">' +LANG("待审核")+ '</div>';
					break;
				case -2 :
					str = '<div title="'+LANG("审核中")+'" class="icon ing">' +LANG("审核中")+ '</div>';
					break;
				case -1 :
					str = '<div title="'+LANG("未通过")+'" class="icon rejectReason ';
					str += (value.RejectReason && value.RejectReason.indexOf('系统判断：') === 0) ? 'sys' : 'err';
					str += '" data-info="'+ util.html(value.RejectReason)+'">' +LANG("未通过:") +value.RejectReason + '</div>';
					break;
			}

			html.append(str);
		}
	};



	function _formatSweetySize( arr ) {
		var i = 0, len = arr.length, retArr = [];
		for( ; i < len; i++ ) {
			retArr.push({
				'Sizes': arr[i]
			});
		}
		return retArr;
	}
	function formatData(data) {
		var clone = util.clone(data);
		util.each(clone, function(item){
			item.Id = item.Id.toString();
		});
		return clone;
	}

});